草庐IT

c++ - Windows XP 下 CAtlStringMgr::GetInstance 崩溃

全部标签

c - 从 dll 导出函数指针

我在一个dll文件中有一个函数指针(在实现中,而不是头文件中)。在exe源码中如何调用this指针指向的函数? 最佳答案 您可以导出返回指针的函数。header:typedefvoid(*MyPtr)();__declspec(dllexport)MyPtrGetMyPtr();来源:MyPtrGetMyPtr(){//retunrthefunctionpointerhere} 关于c-从dll导出函数指针,我们在StackOverflow上找到一个类似的问题:

windows - shell 扩展会导致我的程序崩溃吗?

我的公司构建了一个在WindowsXP上运行的MFC应用程序。我们的一位客户报告说,此应用程序在打开通用文件对话框以允许用户保存日志文件时发生崩溃。我们还没有在我们的任何集成系统上观察到这种崩溃。客户向我们提供了一个故障转储,显示该程序正试图从地址160b2d48处的一些不可访问的内存中读取。该地址似乎来自地址空间的代码部分,因为在其正上方和下方加载了DLL(15dc0000-16085000和160c0000-1611b000),但该地址未加载任何内容。崩溃线程的堆栈如下:>shell32.dll!CFSFolder::GetDetailsEx()+0x533c8bytesshell

c++ - 尝试从某个 COM 端口读取/写入时程序无法执行

我正在通过串行端口与宽带卡通信。我必须通过COM5读取GPS数据,并通过执行命令并读取COM3上的响应来获取信号强度。每当我尝试读取/写入COM3时,程序都无法执行。当我注释掉包含以下内容的行时:if(!WriteFile(hSerial2,wzBuff,7,&dZBytesRead,NULL))std::cout程序运行完美。完整代码如下:#include#include#include#include#include#includeusingnamespacestd;vectorfindLocation(stringstr,charcharacter);intmain(){time

c - Arduino 和 Windows 串行通信问题?

我正在从事一个项目,该项目涉及在连接到ArduinoMega设备的Windows732位平台上的VisualStudio2010Proffesional中实现的一些“c”串行通信(以控制一些硬件**与问题无关)。此代码100%有效;我遇到的唯一问题是我的串行通信发生了一些非常有趣的事情。VisualC程序如下。HANDLEhDevice=CreateFile(L"COM5",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);//OpenCOMhandle(createf

在 Windows 上的 NetBeans 中从 C 项目创建 EXE 输出?

我是NetBeans新手。我在PC上使用NB。我刚刚清理并构建了一个项目,输出是:CLEANSUCCESSFUL(totaltime:1s)make:Nothingtobedonefor`all'.BUILDSUCCESSFUL(totaltime:1s)现在我似乎找不到任何可执行文件。如何设置IDE以创建从项目输出的EXE文件?更新-请阅读下面我的评论。 最佳答案 构建后,可执行文件应该位于类似PROJECT/dist/PLATFORM/project.exe的路径中(dist或build记不清了)

c - 我怎样才能在 C 中获得一个进程句柄而不是它的名字?

我正在WindowsXP上编写程序,试图获取calc.exe的进程句柄。我可以假设用户确实运行了calc.exe,但他可能更改了文件名。即使名称已更改,是否有一个名称可以获取calc.exe进程的句柄?我找到了这个答案,但它不处理顽皮用户更改名称(例如更改为calc_new.exe)的情况:HowcanIgetaprocesshandlebyitsnameinC++?我可以使用Win32进程的一些其他属性来查找句柄吗? 最佳答案 您可以使用以下Win32API调用序列执行此操作:使用Spy++或类似工具找到您定位的顶级窗口的类名。调

c - 如何获得安装的内存大小?

我想查询安装内存的大小。我使用了上面的代码:voidGetInstalledMemory(char*MemorySize){memset(MemorySize,0,sizeof(MemorySize));MEMORYSTATUSEXstatex;statex.dwLength=sizeof(statex);if(!GlobalMemoryStatusEx(&statex))strcpy(MemorySize,"N/A");elsesprintf(MemorySize,"%I64d",statex.ullTotalPhys/1024/1024);}//GetInstalledMemory

c - 在 x,y 位置的 Windows 控制台中打印

我想在Windows的标准控制台上的某个(X,Y)位置打印。我尝试使用conio.h,但已弃用/不存在。gotoxy(x,y)方法似乎是我想要的。我试过这些方法,但它只会打印额外的字符:printf("%c[%d;%df",0x1B,y,x);printf("\x1B%c[%d;%df",0x1B,y,x);printf("\x1B[%d;%dH",0x1B,y,x);提前致谢。 最佳答案 在控制台中定位光标的WindowsAPI调用是SetConsoleCursorPosition.正如有人评论的那样,“curses”是一个跨平台

windows - 应用程序在启动时崩溃 - 如何获取崩溃转储文件?

我的winform应用程序一启动就崩溃了。此问题仅发生在其中一台客户端计算机中。适用于所有其他客户。我正在考虑使用ADPlus获取崩溃转储,但问题是为了在崩溃模式下配置ADPlus,调试器需要首先连接到正在运行的应用程序。这意味着当我配置ADPlus时应用程序必须正在运行,但是,正如我所说的,我的应用程序一启动它就崩溃了。它没有给我运行ADPlus的机会。知道在这种情况下是否可以使用ADPlus吗?在这种情况下,我可以使用任何其他工具来生成进程转储吗? 最佳答案 由于您无法启动程序然后及时附加调试器,您可以尝试以下想法之一:在崩溃的

c - 如何将控制台中的文本保存到 C 中的字符串(Windows 平台)

我目前正在为一个学校项目构建一个控制台应用程序,我的应用程序确实需要这个功能。如何将控制台中的所有文本保存为C(Windows平台)中的字符串?例如:如果我使用函数system("dir"),它会输出到控制台并列出目录中的所有子目录和文件。我希望将它保存在一个字符串中以备后用。 最佳答案 你可以使用popen()而不是system():#include#includeintmain(){FILE*fp;charpath[PATH_MAX];fp=popen("DIR","r");if(fp==NULL){/*Handleerror*